<?php

class Admin_LoginController extends Zend_Controller_Action {

    private $usuario;

    public function preDispatch() {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            if (!empty($auth->getIdentity()->id)) {
                $usuarioDao = new Doctrine_Model_UsuariosDoctrineDao();
                $this->usuario = $this->view->usuario = $usuarioDao->obtenerPorId($auth->getIdentity()->id);
            }
        }
    }

    public function init() {

        $this->_helper->_layout->setLayout('layout_login');
    }

    public function indexAction() { 
        $request = $this->getRequest()->getParams();

        if ($this->getRequest()->isPost()) {
            if ($request["mail"] != "" && $request["password"] != "") {
                if ($this->_procesarAutenticacion($request)) {
                    $auth = Zend_Auth::getInstance();
                    if ($auth->getIdentity()->role == 1) {
                        $this->_helper->redirector('index', 'index', 'usuarios');
                    } else {
                        $this->_helper->redirector('index', 'index', 'usuarios');
                    }
                }
            } else {
                $this->view->mensajeError = "Mail y/o Clave son requeridas.";
            }
        }

        $this->render();
    }

    protected function _procesarAutenticacion($values) {
        $adapter = $this->_getAuthAdapter();

        $adapter->setIdentity($values['mail']);
        $adapter->setCredential($values['password']);

        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($adapter);

        switch ($result->getCode()) {
            case -1:
                $this->view->mensajeError = "Acceso Denegado, mail o clave invalidas!";
                break;
            case -3:
                $this->view->mensajeError = "Acceso Denegado, Uusario Bloqueado";
                break;
            default:
                break;
        }
        if ($result->isValid()) {
            $user = $adapter->getResultRowObject();
            $auth->getStorage()->write($user);
            
            $usuarioDao = new Doctrine_Model_UsuariosDoctrineDao();
            $this->usuario = $this->view->usuario = $usuarioDao->obtenerPorId($auth->getIdentity()->id);
            $this->procesosAutomaticos();
            return true;
        }
        return false;
    }

    protected function _getAuthAdapter() {
        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
        $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);

        $authAdapter->setTableName('usuario')
                ->setIdentityColumn('mail')
                ->setCredentialColumn('password')
                ->setCredentialTreatment(" ?  AND activo=1");

        return $authAdapter;
    }

    public function logoutAction() {
        Zend_Auth::getInstance()->clearIdentity();
        Zend_Session::namespaceUnset('session');
        Zend_Session::destroy();
        $this->_helper->redirector('index');
    }

    public function accesodenegadoAction() {
        
    }

    public function procesosAutomaticos() {
        //Doctrine_Model_ProcesosAutomaticos::verficarPromesasPendientes();
        //Doctrine_Model_ProcesosAutomaticos::verficarPromesasParaMora();
        //Doctrine_Model_ProcesosAutomaticos::promesasDeUsuarios();
        //Doctrine_Model_ProcesosAutomaticos::alertaDePromesas($this->usuario);
        
      //  Doctrine_Model_ProcesosAutomaticos::generarBackupDB();
    }

//    public function verficarPromesasPendientes() {
//        $this->promesasDao = new Doctrine_Model_PromesasDao();
//        $promesasPendientes = $this->promesasDao->obtenerPendientesDeHoy();
//        foreach ($promesasPendientes as $p) {
//            $p->setPendiente(0);
//
//            if (!$this->promesasDao->guardar($p)) {
//                echo "problemas";
//                exit;
//            }
//        }
//    }

   

}

